/**
 * 
 */
package com.cuc.platform.core.componet.security.dao;

import java.util.List;
import java.util.Map;

import org.springframework.dao.DataAccessException;

import com.cuc.platform.core.componet.security.domain.SecurityRole;

/**
 * @author peepul
 *
 * 角色DAO访问接口
 */
public interface SecurityRoleDao {
	/**
	 * 取所有角色对象
	 * 
	 * @return SecurityRole List
	 */
	public List<SecurityRole> getAllRoles();

	/**
	 * 根据主标识获取指定的SecurityRole对象
	 * 
	 * @param  id
	 * @return SecurityRole
	 * @throws Exception
	 */
	public SecurityRole getRoleById(Long id);

	/**
	 * 获取带权限的Role对象
	 * 
	 * @return SecurityUser
	 */
	public SecurityRole getRoleWithAuths(Long id);
	
	/**
	 * 新增角色对象
	 * 
	 * @param role
	 */
	public void insertRole(SecurityRole role) throws DataAccessException;
	
	/**
	 * 更新角色对象
	 * 
	 * @param role
	 * @throws DataAccessException
	 */
	public void updateRole(SecurityRole role) throws DataAccessException;
	
	/**
	 * 根据id删除role对象
	 * 
	 * 注：删除成功返回值为1，如没找到要删除的数据返回0，如果删除出错，则产生异常
	 * @param id
	 */
	public int delRoleById(Long id) throws DataAccessException;	
	
	/**
	 * 根据角色id，查找所有的权限数据，其中角色已经和权限有关联的，角色对象id属性不为空，否则为空。
	 * 
	 * @param roleId
	 * @return List<SecurityRole>
	 */
	public List<SecurityRole> viewAuthswithRoles(Long roleId);
	
	/**
	 * 根据roleId删除ss_role_auth中已有的关联关系
	 * 
	 * @param roleId
	 */
	public void delRoleAuthUnions(Long roleId) throws DataAccessException;
	
	/**
	 * 保存权限与资源的关联关系。往ss_auth_resc中保存关联数据
	 * 
	 * @param map
	 */
	public void saveRoleAuthUnions(Map<String, Long> map);
}
